Static website hosting in Azure Storage | 您所在的位置:网站首页 › static › Static website hosting in Azure Storage |
Static website hosting in Azure Storage
Article
01/14/2022
7 minutes to read
Thank you. You can serve static content (HTML, CSS, JavaScript, and image files) directly from a storage container named $web. Hosting your content in Azure Storage enables you to use serverless architectures that include Azure Functions and other Platform as a service (PaaS) services. Azure Storage static website hosting is a great option in cases where you don't require a web server to render content. Static websites have some limitations. For example, If you want to configure headers, you'll have to use Azure Content Delivery Network (Azure CDN). There's no way to configure headers as part of the static website feature itself. Also, AuthN and AuthZ are not supported. If these features are important for your scenario, consider using Azure Static Web Apps. It's a great alternative to static websites and is also appropriate in cases where you don't require a web server to render content. You can configure headers and AuthN / AuthZ is fully supported. Azure Static Web Apps also provides a fully managed continuous integration and continuous delivery (CI/CD) workflow from GitHub source to global deployment. If you need a web server to render content, you can use Azure App Service. Setting up a static websiteStatic website hosting is a feature that you have to enable on the storage account. To enable static website hosting, select the name of your default file, and then optionally provide a path to a custom 404 page. If a blob storage container named $web doesn't already exist in the account, one is created for you. Add the files of your site to this container. For step-by-step guidance, see Host a static website in Azure Storage. Files in the $web container are case-sensitive, served through anonymous access requests and are available only through read operations. Uploading contentYou can use any of these tools to upload content to the $web container: Azure CLI Azure PowerShell module AzCopy Azure Storage Explorer Azure Pipelines Visual Studio Code extension and Channel 9 video demonstration Viewing contentUsers can view site content from a browser by using the public URL of the website. You can find the URL by using the Azure portal, Azure CLI, or PowerShell. See Find the website URL. The index document that you specify when you enable static website hosting appears when users open the site and don't specify a specific file (For example: https://contosoblobaccount.z22.web.core.windows.net). If the server returns a 404 error, and you have not specified an error document when you enabled the website, then a default 404 page is returned to the user. Note Cross-Origin Resource Sharing (CORS) support for Azure Storage is not supported with static website. Secondary endpointsIf you set up redundancy in a secondary region, you can also access website content by using a secondary endpoint. Because data is replicated to secondary regions asynchronously, the files that are available at the secondary endpoint aren't always in sync with the files that are available on the primary endpoint. Impact of the setting the public access level of the web containerYou can modify the public access level of the $web container, but this has no impact on the primary static website endpoint because these files are served through anonymous access requests. That means public (read-only) access to all files. The following screenshot shows the public access level setting in the Azure portal: While the primary static website endpoint is not affected, a change to the public access level does impact the primary blob service endpoint. For example, if you change the public access level of the $web container from Private (no anonymous access) to Blob (anonymous read access for blobs only), then the level of public access to the primary static website endpoint https://contosoblobaccount.z22.web.core.windows.net/index.html doesn't change. However, the public access to the primary blob service endpoint https://contosoblobaccount.blob.core.windows.net/$web/index.html does change from private to public. Now users can open that file by using either of these two endpoints. Disabling public access on a storage account does not affect static websites that are hosted in that storage account. For more information, see Configure anonymous public read access for containers and blobs. Mapping a custom domain to a static website URLYou can make your static website available via a custom domain. It's easier to enable HTTP access for your custom domain, because Azure Storage natively supports it. To enable HTTPS, you'll have to use Azure CDN because Azure Storage does not yet natively support HTTPS with custom domains. see Map a custom domain to an Azure Blob Storage endpoint for step-by-step guidance. If the storage account is configured to require secure transfer over HTTPS, then users must use the HTTPS endpoint. Tip Consider hosting your domain on Azure. For more information, see Host your domain in Azure DNS. Adding HTTP headersThere's no way to configure headers as part of the static website feature. However, you can use Azure CDN to add headers and append (or overwrite) header values. See Standard rules engine reference for Azure CDN. If you want to use headers to control caching, see Control Azure CDN caching behavior with caching rules. Multi-region website hostingIf you plan to host a website in multiple geographies, we recommend that you use a Content Delivery Network for regional caching. Use Azure Front Door if you want to serve different content in each region. It also provides failover capabilities. Azure Traffic Manager is not recommended if you plan to use a custom domain. Issues can arise because of how Azure Storage verifies custom domain names. PermissionsThe permission to be able to enable static website is Microsoft.Storage/storageAccounts/blobServices/write or shared key. Built in roles that provide this access include Storage Account Contributor. PricingYou can enable static website hosting free of charge. You're billed only for the blob storage that your site utilizes and operations costs. For more details on prices for Azure Blob Storage, check out the Azure Blob Storage Pricing Page. MetricsYou can enable metrics on static website pages. Once you've enabled metrics, traffic statistics on files in the $web container are reported in the metrics dashboard. To enable metrics on your static website pages, see Enable metrics on static website pages. Feature supportThis table shows how this feature is supported in your account and the impact on support when you enable certain capabilities. Storage account type Blob Storage (default support) Data Lake Storage Gen2 1 NFS 3.0 1 SFTP 1 Standard general-purpose v2 Premium block blobs1 Data Lake Storage Gen2, Network File System (NFS) 3.0 protocol, and SSH File Transfer Protocol (SFTP) support all require a storage account with a hierarchical namespace enabled. FAQ Does the Azure Storage firewall work with a static website?Yes. Storage account network security rules, including IP-based and VNET firewalls, are supported for the static website endpoint, and may be used to protect your website. Do static websites support Azure Active Directory (Azure AD)?No. A static website only supports anonymous public read access for files in the $web container. How do I use a custom domain with a static website?You can configure a custom domain with a static website by using Azure Content Delivery Network (Azure CDN). Azure CDN provides consistent low latencies to your website from anywhere in the world. How do I use a custom SSL certificate with a static website?You can configure a custom SSL certificate with a static website by using Azure CDN. Azure CDN provides consistent low latencies to your website from anywhere in the world. How do I add custom headers and rules with a static website?You can configure the host header for a static website by using Azure CDN - Verizon Premium. We'd be interested to hear your feedback here. Why am I getting an HTTP 404 error from a static website?This can happen if you refer to a file name by using an incorrect case. For example: Index.html instead of index.html. File names and extensions in the url of a static website are case-sensitive even though they're served over HTTP. This can also happen if your Azure CDN endpoint is not yet provisioned. Wait up to 90 minutes after you provision a new Azure CDN for the propagation to complete. Why isn't the root directory of the website not redirecting to the default index page?In the Azure portal, open the static website configuration page of your account and locate the name and extension that is set in the Index document name field. Ensure that this name is exactly the same as the name of the file located in the $web container of the storage account. File names and extensions in the url of a static website are case-sensitive even though they're served over HTTP. Next steps Host a static website in Azure Storage Map a custom domain to an Azure Blob Storage endpoint Azure Functions Azure App Service Build your first serverless web app Tutorial: Host your domain in Azure DNS |
CopyRight 2018-2019 实验室设备网 版权所有 |